package com.bridgeintelligent.tag.webserver.dim.mgmt.service.report;

import com.bridgeintelligent.tag.webserver.dim.mgmt.api.report.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;

import java.util.List;
import java.util.Map;

public interface ReportService {
    String TYPE_FIVE = "05";

    List<ReportSystemUseInfo> systemUseInfo(String sortWord);

    List<ReportOrgUseInfo> orgUseInfo(String startTime,String endTime,String sortWord);

    ReportPage<ReportOrgUseInfo> orgUseInfoPage(String sortWord, String orgId, String startTime,String endTime,Integer pageNum, Integer pageSize);

    List<ReportOrgUseInfo> orgUseInfoWithTotal(String sortWord, String orgId, String startTime,String endTime);

    List<ReportHotDimInfo> hotDimInfo(String dimType,String secDimType);

    ReportPage<ReportCombinationCustomizeInfo> combinationBustomizeInfo(String selectType,String sortWord, Integer pageNum, Integer pageSize);

    ReportPage<ReportCustomerUseInfo> customerUseInfo(String sortWord, Integer pageNum, Integer pageSize);

    ReportPage<ReportCustomerCreateInfo> customerCreateInfo(String sortWord, Integer pageNum, Integer pageSize);

    List<ReportSystemModelUseInfo> systemModelUseInfo();

    ReportMonitorBordInfo monitorBordInfo();

    List<OrgInfo> findOrgList(String orgName);

    List<ReportSystemModelDetailInfo> modelDetailInfo(String modelType,String sortWord);

    List<ReportSystemModelTypeInfo> modelTypeInfo();

    Map<Integer,ReportSystemModelDetailInfo> modelDetailMaxInfo();

    ReportPage<OrgUserLoginModel> orgUserLogin(String orgId,String sortWord,String startTime,String endTime,Integer pageNum,Integer pageSize);

    ReportPage<OrgUserCustomerModel> orgUserCustomer(String orgId, String sortWord, @Param("startTime") String startTime, @Param("endTime") String endTime,Integer pageNum, Integer pageSize);

    ReportPage<OrgUserDimModel> orgUserDim(String orgId,String sortWord,@Param("startTime") String startTime,@Param("endTime") String endTime,Integer pageNum,Integer pageSize);


}
